package com.bjpowernode.java;

/**
 * @author wuyuecai
 * @create 2021-05-30 19:42
 */
public class PerfectNums {
    public static void main(String[] args) {
        System.out.println(perfectNums(8));
    }
    /*
  一个数如果恰好等于它的因子之和，这个数就称为"完数"。（因子：除去这个数本身的约数）
  找出1000以内的所有完数
   */
    //时间复杂度O(根号n),空间复杂度O(1)
    public static boolean perfectNums(int num){
        if(num <= 1){
            return false;
        }
        int sum = 0;
        //循环条件是num的开方，这时只要0-(int) Math.sqrt(num)之间的数能被整除，那么num/i也一定是num的因子
        for (int i = 1; i <= (int) Math.sqrt(num); i++) {
            if (num % i == 0) {
                sum += i;
                sum += num / i;
                //num不为1时，加上num/i的数
//                if (num != 1) {
//                }
            }
        }
       return sum - num == num;
    }
}
